package br.com.advocacia.faces;

import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;

import br.com.advocacia.entidade.Vara;
import br.com.advocacia.logica.contract.DefaultLogicaContract;
import br.com.advocacia.util.FacesUtil;
import br.com.advocacia.util.StringUtil;

@ManagedBean(name="varaFaces")
@ViewScoped
public class VaraFaces extends FacesUtil {
	

	private static final long serialVersionUID = -385176836056618526L;

	@ManagedProperty(value = "#{logicaDefault}")
	private DefaultLogicaContract<Vara> logicaVara;
	
	private Vara vara = new Vara();
	private List<Vara> listaVara = new ArrayList<>();
	private String varaBusca;

	
	public void adicionar() {
		try {
			if (validaCampos()) {
				logicaVara.adicionar(vara);
				adicionarMensagem("Vara adicionada com sucesso");
				this.buscarVara();
				fecharModal("dialogVara");
			} else {
				return;
			}
			
		} catch (Exception e) {
			adicionarMensagem("Houve um erro ao adicionar a Vara");
		}
	}
	
	public void prepararAdicionar() {
		this.vara = new Vara();
		abrirModal("dialogVara");
	}
	
	public void selecionarRegistro(Long idArea, boolean editar) {
		try {
			this.vara = logicaVara.obterPorId(Vara.class,idArea);
			
			if (editar) {
				abrirModal("dialogVara");
			} else {
				abrirModal("dialogExcluir");
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public void editar() {
		try {
			if (validaCampos()) {
				logicaVara.editar(this.vara);
				adicionarMensagem("Vara editada com sucesso");
				fecharModal("dialogVara");
				this.buscarVara();
			} else {
				return;
			}
			
		} catch (Exception e) {
			adicionarMensagem("Houve um erro ao editar a Vara");
		}
	}
	
	public void remover() {
		try {
			logicaVara.remover(Vara.class, this.vara.getId());
			adicionarMensagem("Vara removida com sucesso");
			fecharModal("dialogExcluir");
			this.buscarVara();
		} catch (Exception e) {
			adicionarMensagem("Houve um erro ao remover a Vara");
		}
	}
	
	public void buscarVara() {
		if (listaVara != null) {
			this.listaVara.clear();
		}
		
		try {
			if (!StringUtil.textoPreenchido(varaBusca)) {
				this.listaVara =  logicaVara.buscarTodos(Vara.class, "vara");
			} else {
				this.listaVara = logicaVara.buscarPorCampo(Vara.class, "vara", varaBusca);
			}
		} catch (Exception e) {
			adicionarMensagem("Houve um erro ao buscar as informações");
		}
	}
	
	public boolean validaCampos() {
		boolean valido = true;
		
		if (!StringUtil.textoPreenchido(this.vara.getVara())) {
			adicionarMensagem("O campo vara é obrigatório");
			valido = false;
		}
		return valido;
	}
	
	public void setlogicaVara(DefaultLogicaContract<Vara> logicaVara) {
		this.logicaVara = logicaVara;
	}

	public List<Vara> getListaVara() {
		return listaVara;
	}

	public void setListaVara(List<Vara> listaVara) {
		this.listaVara = listaVara;
	}

	public String getVaraBusca() {
		return varaBusca;
	}

	public void setVaraBusca(String VaraBusca) {
		this.varaBusca = VaraBusca;
	}

	public Vara getVara() {
		return vara;
	}

	public void setVara(Vara Vara) {
		this.vara = Vara;
	}
	
	
}